package com.cskaoyan.javase._1interface._5extend;

/**
 * 链式调用: 一行调用多个方法,一行实现一个功能,但实现这个功能的过程被直接隐藏起来了
 * 链式调用的前提是什么?
 * 为什么可以链式调用?
 * 处理方法调用的本质是处理返回值,只有前面方法返回一个对象时,才可以继续调用方法,形成链式调用
 * 链式调用的前提是,前面方法的调用结果,返回的是一个对象.
 *
 * 优点: 简洁优雅
 * 缺点: 链式调用过长,可读性差
 *
 * @since 16:13
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        Student s = new Student();
        Student s2 = s.getStudent();
        Teacher t = s2.getTeacher();
        t.test();

        // 以上代码,可以四合一,一行结束,链式调用
        new Student().getStudent().getTeacher().test();
    }
}

class Student {
    public Student() {
    }

    public Student getStudent() {
        return new Student();
    }

    public Teacher getTeacher(){
        return new Teacher();
    }
}

class Teacher {
    void test() {
        System.out.println("6666");
    }
}